<?php
/**
 * Created by PhpStorm.
 * User: 554665488
 * Date: 2018-7-31
 * Time: 16:15
 * @description:
 * @Author: yfl
 * @QQ 554665488
 */
$ppid = posix_getpid();
$pppid = posix_getppid();

while(1)//循环采用3个进程
{
    //declare(ticks=1);
    $bWaitFlag= FALSE; // 是否等待进程结束
    //$bWaitFlag = TRUE; // 是否等待进程结束
    $intNum= 3; // 进程总数
    $pids= array(); // 进程PID数组
    for($i= 0; $i<$intNum; $i++)
    {
        $pids[$i] = pcntl_fork();// 产生子进程，而且从当前行之下开试运行代码，而且不继承父进程的数据信息
        $cpid=posix_getpid();
        /*if($pids[$i])//父进程
        {
        //echo $pids[$i]."parent"."$i -> " . time(). "\n";
        }
        */
        if($pids[$i] == -1)
        {
            echo"couldn't fork". "\n";
        }
        elseif(!$pids[$i])
        {
            sleep(1);
            echo"\n"."第".$i."个进程 -> ". time(). "->cpid=$cpid"."->ppid=$ppid"."->pppid=$pppid"."\n";
            //$url=" 抓取页面的例子
            //$content = file_get_contents($url);
            //file_put_contents('message.txt',$content);
            //echo "\n"."第".$i."个进程 -> " ."抓取页面".$i."-> " . time()."\n";
            exit(0);//子进程要exit否则会进行递归多进程，父进程不要exit否则终止多进程
        }
        if($bWaitFlag)
        {
            pcntl_waitpid($pids[$i], $status, WUNTRACED);echo"wait $i -> ". time() . "\n";
        }
    }
    sleep(1);
}
//go(function() {
//    go(function () {
//        co::sleep(2.0);
//        go(function () {
//            co::sleep(3.0);
//            echo "co[3] end\n";
//        });
//        echo "co[2] end\n";
//    });
//
//    co::sleep(1.0);
//    echo "co[1] end\n";
//});